const checkPhone = (rule, value, callback) => {
  if (value) {
    const reg = /^1[0-9]\d{9}$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('请输入正确的手机号'))
    }
  }
}

// 只允许输入两位小数
const toFixed = (rule, value, callback) => {
  if (!value) callback()
  if (value) {
    const reg = /^\d+(\.\d{0,2})?$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('只允许输入两位小数'))
    }
  }
}

// 只允许输入两位小数 正负
const twoPoint = (rule, value, callback) => {
  if (value) {
    const reg = /^(-)?(0|[1-9]\d*)(\s|$|\.\d{1,2}\b)/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('只允许输入两位小数'))
    }
  }
}

const uploadValidImage = file => {
  let fileTypes = ['jpg', 'jpeg', 'png', 'gif']
  let fileName = file.name.toLowerCase()
  let fileType = fileName.slice(fileName.lastIndexOf('.') + 1, fileName.length)
  // 上传的文件不符合fileTypes
  if (fileTypes.indexOf(fileType) == -1) {
    return false
  } else {
    return true
  }
}

// 只允许输入负数
const limitMinus = (rule, value, callback) => {
  if (value) {
    const reg = /^[-][0-9.]+$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('数量只能为负数'))
    }
  }
}

// 只允许输入0和正整数
const positiveInteger = (rule, value, callback) => {
  if (!value) callback()
  const reg = /^[0-9]*[1-9][0-9]*$/
  if (reg.test(value)) {
    callback()
  } else {
    return callback(new Error('只允许输入正整数'))
  }
}

// 大于0
const parnt = (rule, value, callback) => {
  if (value) {
    const reg = /^([1-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('请输入大于0的数字'))
    }
  }
}

// 只允许输入两位小数 正
const twoUpPoint = (rule, value, callback) => {
  if (value) {
    const reg = /^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$/
    if (reg.test(value)) {
      callback()
    } else {
      return callback(new Error('只允许大于0的两位小数'))
    }
  }
}
export {
  checkPhone,
  toFixed,
  uploadValidImage,
  limitMinus,
  positiveInteger,
  twoPoint,
  parnt,
  twoUpPoint
}
